package entidades;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;




@Entity
@Table(name="Proyectos")
public class Proyecto implements Serializable {

	private static final long serialVersionUID = 1L;

	@Id @GeneratedValue(strategy=GenerationType.AUTO)
	@Column(nullable=false,name="ID_PROYECTO")
	private int idProyecto;
	
	@Column(nullable=false, length=50,name="NOMBRE_PROYECTO")
	private String nombreProyecto;
	
	@Temporal(TemporalType.TIMESTAMP)
	@Column(nullable=false,name="FECHA_INICIO")
	private Date fechaInicio;

	@Column(nullable=true,name="DURAC_ESTIMADA")
	private int duracEstimada;
	
	@Column(nullable=true, length=50, name="UBICACION")
	private String ubicacion;
	
	@Temporal(TemporalType.TIMESTAMP)
	@Column(nullable=true,name="FECHA_FIN")
	private Date fechaFin;
	
	@OneToOne
	@JoinColumn(nullable=false,name="ID_ESTADO")
	private EstadoProyecto estado;
	
	
	@OneToOne
	@JoinColumn(nullable=false,name="ID_TIPO_PROYECTO")
	private TipoProyecto tipoProyecto;
	
	@OneToMany(fetch=FetchType.EAGER)
	@JoinColumn(name="ID_PROYECTO")
	private List<Obrero> obreros;
	
	@OneToOne
	@JoinColumn(nullable=false,name="ID_CLIENTE")
	private Cliente cliente;
	
	@Column(nullable=true, length=700, name="NOTAS")
	private String notas;

	

	public Proyecto(){
		
	}
	
	public int getIdProyecto() {
		return idProyecto;
	}

	public String getNombreProyecto() {
		return nombreProyecto;
	}

	public Date getFechaInicio() {
		return fechaInicio;
	}

	public int getDuracEstimada() {
		return duracEstimada;
	}

	public String getUbicacion() {
		return ubicacion;
	}

	public Date getFechaFin() {
		return fechaFin;
	}



	public TipoProyecto getTipoProyecto() {
		return tipoProyecto;
	}

	public List<Obrero> getObrerosAsignados() {
		return obreros;
	}

	public void setIdProyecto(int idProyecto) {
		this.idProyecto = idProyecto;
	}

	public void setNombreProyecto(String nombreProyecto) {
		this.nombreProyecto = nombreProyecto;
	}

	public void setFechaInicio(Date fechaInicio) {
		this.fechaInicio = fechaInicio;
	}

	public void setDuracEstimada(int duracEstimada) {
		this.duracEstimada = duracEstimada;
	}

	public void setUbicacion(String ubicacion) {
		this.ubicacion = ubicacion;
	}

	public void setFechaFin(Date fechaFin) {
		this.fechaFin = fechaFin;
	}

	public void setTipoProyecto(TipoProyecto tipoProyecto) {
		this.tipoProyecto = tipoProyecto;
	}

	public void setObrerosAsignados(List<Obrero> obrerosAsignados) {
		this.obreros = obrerosAsignados;
	}
	
	public void setCliente(Cliente cliente) {
		this.cliente = cliente;
	}

	public Cliente getCliente() {
		return cliente;
	}

	public void setNotas(String notas) {
		this.notas = notas;
	}

	public String getNotas() {
		return notas;
	}

	public void setEstado(EstadoProyecto estado) {
		this.estado = estado;
	}
	
	public EstadoProyecto getEstado() {
		return estado;
	}

//	public Boolean getEstadoYesNo() {
//		return estadoYesNo;
//	}
//
//	public void setEstadoYesNo(Boolean estadoYesNo) {
//		this.estadoYesNo = estadoYesNo;
//	}

	public List<Obrero> getObreros() {
		return obreros;
	}

	public void setObreros(List<Obrero> obreros) {
		this.obreros = obreros;
	}

	@Override
	public String toString(){
		return nombreProyecto;
	}

	
}
